package com.lxy.dao;

import com.lxy.pojo.SecKill;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Mapper
public interface SecKillDao {

    /**
     * 减库存
     *
     * @param secKillId 秒杀对象id
     * @param killTime  秒杀时间
     * @return 如果影响行数=1，表示更新的记录行数
     */
    int reduceNumber(@Param("secKillId") long secKillId, @Param("killTime") Date killTime);

    /**
     * 根据ID查询秒杀对象
     *
     * @param secKillId 秒杀对象id
     * @return 查询的秒杀对象
     */
    SecKill queryById(long secKillId);

    /**
     * 根据偏移量查询秒杀商品列表
     *
     * @param offset 偏移量
     * @param limit  偏移量后多少条记录
     * @return
     */
    List<SecKill> queryAll(@Param("offset") int offset, @Param("limit") int limit);


    /**
     * 使用存储过程执行秒杀
     * @param paramMap
     */
    void killByProcedure(Map<String, Object> paramMap);
}